Portable computerized device adapted for ad hoc security associations

ABSTRACT

A portable communications device adapted to provide communication security in, for example, an ad hoc or temporary networked environment. In one embodiment, the network comprises an untrusted medium, and the device includes network security apparatus adapted to create security associations between devices on the network, including mutual authentication. Traffic between the associated devices may be encrypted for e.g., data confidentiality and integrity protection. In one variant, the network security apparatus comprises a software entity disposed at least partly within the software stack of the device. The device may be untrusted (e.g., have an untrusted operating system). User identification or validation may also be provided, for example via inputs received via a user interface.

RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 10/877,791, filed Jun. 25, 2004, which is a continuation ofU.S. patent application Ser. No. 09/924,214, filed on Aug. 7, 2001, nowU.S. Pat. No. 6,760,768, issued on Jul. 6, 2004, which is a continuationof U.S. patent application Ser. No. 09/127,280, filed on Jul. 31, 1998,now U.S. Pat. No. 6,272,538, issued on Aug. 7, 2001, which is acontinuation-in-part of U.S. application Ser. No. 08/688,543, filed Jul.30, 1996, now U.S. Pat. No. 5,832,228, issued on Nov. 3, 1998; andrelated to U.S. Pat. No. 5,577,209, entitled APPARATUS AND METHOD FORPROVIDING MULTI-LEVEL SECURITY FOR COMMUNICATION AMONG COMPUTERS ANDTERMINALS ON A NETWORK, issued to Boyle et al., Nov. 19, 1996, each ofwhich is hereby incorporated herein by reference in its entirety.

The present application is also related to the following applicationsfiled on even date herewith, each of which is hereby incorporated hereinby reference in its entirety:

-   -   U.S. patent application Ser. No. 11/776,406, entitled “PORTABLE        COMMUNICATIONS DEVICE WITH ENHANCED SECURITY”;    -   U.S. patent application Ser. No. 11/776,417, entitled “METHODS        FOR PROVIDING SECURITY FOR AD HOC NETWORKED COMPUTERIZED        DEVICES”;    -   U.S. patent application Ser. No. 11/776,413, entitled “SYSTEM        FOR PROVIDING SECURITY FOR AD HOC NETWORKED COMPUTERIZED        DEVICES”;    -   U.S. patent application Ser. No. 11/776,421, entitled “SYSTEM        FOR PROVIDING SECURITY IN A NETWORK COMPRISING COMMUNICATIONS        DEVICES”;    -   U.S. patent application Ser. No. 11/776,396, entitled “METHODS        OF OPERATING A PORTABLE COMMUNICATIONS DEVICE WITH ENHANCED        SECURITY”;    -   U.S. patent application Ser. No. 11/776,424, entitled “SYSTEM        FOR PROVIDING SECURITY IN A NETWORK COMPRISING COMPUTERIZED        DEVICES”;    -   U.S. patent application Ser. No. 11/776,445, entitled        “COMPUTERIZED ACCESS DEVICE WITH NETWORK SECURITY”;    -   U.S. patent application Ser. No. 11/776,461, entitled “PORTABLE        COMPUTERIZED DEVICE WITH NETWORK SECURITY”; and    -   U.S. patent application Ser. No. 11/776,471, entitled “METHOD        AND SYSTEM FOR ESTABLISHING A SECURITY PERIMETER IN COMPUTER        NETWORKS”.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates in general to secure and multi-levelsecure (MLS) networks and in particular to a system and method forproviding security and multi-level security for computer devicesutilized in non-secure networks.

2. Description of the Related Art

Multi-level secure (MLS) networks provide a means of transmitting dataof different classification levels (i.e., Unclassified, Confidential,Secret and Top Secret) over the same physical network. To be secure, thenetwork must provide the following security functions: data integrityprotection, separation of data types, access control, authentication anduser identification and accountability.

Data integrity protection ensures that data sent to a terminal is notmodified en route. Header information and security level are alsoprotected against uninvited modification. Data integrity protection canbe performed by check sum routines or through transformation of data,which includes private key encryption and public key encryption.

Separation of data types controls the ability of a user to send orreceive certain types of data. Data types can include voice, video,E-Mail, etc. For instance, a host might not be able to handle videodata, and, therefore, the separation function would prevent the hostfrom receiving video data.

Access control restricts communication to and from a host. In rule basedaccess control, access is determined by the system assigned securityattributes. For instance, only a user having Secret or Top Secretsecurity clearance might be allowed access to classified information. Inidentity based access control, access is determined by user-definedattributes. For instance, access may be denied if the user is notidentified as an authorized participant on a particular project. Forcontrol of network assets, a user may be denied access to certainelements of the network. For instance, a user might be denied access toa modem, or to a data link, or to communication on a path from oneaddress to another address.

Identification of a user can be accomplished by a unique name, password,retina scan, smart card or even a key for the host. Accountabilityensures that a-specific user is accountable for particular actions. Oncea user establishes a network connection, it may be desirable that theuser's activities be audited such that a “trail” is created. If theuser's actions do not conform to a set of norms, the connection may beterminated.

Currently, there are three general approaches to providing security fora network: trusted networks, trusted hosts with trusted protocols, andencryption devices. The trusted network provides security by placingsecurity measures within the configuration of the network. In general,the trusted network requires that existing protocols and, in some cases,physical elements be replaced with secure systems. In the Boeing MLSLan, for instance, the backbone cabling is replaced by optical fiber andall access to the backbone is mediated by security devices. In theVerdix VSLAN, similar security devices are used to interface to thenetwork, and the network uses encryption instead of fiber optics toprotect the security of information transmitted between devices. VSLANis limited to users on a local area network (LAN) as is the Boeing MLSLan.

Trusted hosts are host computers that provide security for a network byreviewing and controlling the transmission of all data on the network.For example, the U.S. National Security Agency (NSA) has initiated aprogram called Secure Data Network System (SDNS) which seeks toimplement a secure protocol for trusted hosts. In order to implementthis approach, the installed base of existing host computers must beupgraded to run the secure protocol. Such systems operate at the Networkor Transport Layers (Layers 3 or 4) of the Open Systems Interconnection(OSI) model.

Encryption devices are used in a network environment to protect theconfidentiality of information. They may also be used for separation ofdata types or classification levels. Packet encryptors or end-to-endencryption (EEE) devices, for instance, utilize different keys andlabels in protocol headers to assure the protection of data. However,these protocols lack user accountability since they do not identifywhich user of the host is using the network, nor are they capable ofpreventing certain users from accessing the network. EEE devicestypically operate at the Network Layer (Layer 3) of the OSI model. Thereis a government effort to develop cryptographic protocols which operateat other protocol layers.

An area of growing concern in network security is the use of computerdevices in non-secure networks. Such computer devices often includevaluable information, which may be lost or stolen due to these computersbeing accessed through the non-secured network. In light of thisproblem, a number of related products have been developed. The productsdeveloped include Raptor Eagle, Raptor Remote, Entrust, Secret Agent andVeil. Although, these products serve the same purpose, a number ofdifferent approaches have been utilized. For example, Raptor Eagle,Raptor Remote, and Veil implement these products as softwareinstantiations. While Entrust and Secret Agent utilize hardwarecryptographic components. Additionally, Raptor products are alsoapplication independent.

A problem with the above described products is that none are based uponthe use of highly trusted software. Veil is an off-line encryptionutility, which cannot prevent the inadvertent release of non-encryptedinformation. While Raptor Eagle and Raptor Remote are based on softwareinstantiations and thus cannot be verified at the same level ofassurance. Secret Agent and Entrust while hardware based are dependentupon the development of integration software for specific applications.

It is therefore, an objective of the present invention to provide amulti-level security system that is readily adaptable to computerdevices to provide an adequate level of security assurances.

SUMMARY OF THE INVENTION

In a first aspect of the invention, a substantially portablecomputerized device is disclosed. In one variant, the portable devicecomprises: a first computer program operative to run on the portabledevice and to obtain at least one temporary address for the portabledevice; a second computer program operative to run on the portabledevice and adapted to establish a non-permanent security associationbetween the portable device and a second device; and a third computerprogram operative to run on the first computerized device and adapted toseal or encrypt data sent from the portable device using at least onecryptographic key.

In another variant, a fourth computer program is provided that isadapted to identify or validate a user via inputs received via a usedinterface before the association can be established.

In a second aspect of the invention, a portable device adapted to permitad hoc security associations to exist between the portable device andother devices is disclosed. In one embodiment, the devices may or maynot have communicated previously, and the portable device comprises: afirst computer program operative to establish an ad hoc securityassociation between the portable device and another device.

In one variant, the device further comprises a second computer programoperative to run on the portable device and adapted to encrypt data sentto the other device using at least one cryptographic key; and a thirdcomputer program operative to run on the portable device and adapted toappend said data with appended message element useful for at least dataintegrity.

In a third aspect of the invention, a computerized communications devicecoupled to at least one communications channel is disclosed. In oneembodiment, the device comprises: a first network security apparatuscoupled to a communications stack of the computerized device, the firstnetwork security apparatus communicating with other like networksecurity apparatus on a network by establishing an association.

In one variant, the first network security apparatus is configured toperform a plurality of security functions. These functions may includefor example: receipt of a message sent between the computerized deviceand the communications channel; conversion of the received messages toand from a format utilized by the communications channel; identificationof the computerized device requesting access to the communicationschannel; determination of whether the association exists with anothernetwork security apparatus device; transmission of the messages receivedfrom the computerized device when the association exists; andestablishment of an association with other like network securityapparatus devices when the association does not exist.

In a fourth aspect of the invention, a computerized device is disclosed.In one embodiment, the device comprises an untrusted operating system.

In one variant, the device further comprises a first routine operativeto run on the computerized device and to obtain at least one address forthe computerized device after the first computerized device is placed indata communication with at least one another via an untrusted medium.

In another variant, the system further comprises a second routineoperative to run on the first computerized device and establish asecurity association between the computerized device and a seconddevice, the second computer program comprising an authenticationalgorithm adapted to cause the first computerized device and the seconddevice to exchange cryptographic data, the data being substantiallyunique to the association and comprising at least one random number.

In yet another variant, the device further comprises a third routineoperative to run on the first computerized device and adapted to seal orencrypt data sent from the portable device using at least onecryptographic key.

In another variant, the device further comprises a fourth routineoperative to run on the computerized device and adapted to evaluate theencrypted data sent from the second device for at least data integrity.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram of an MLS network system in accordancewith the present invention;

FIG. 2 is a block diagram of the software SNIU installed in a computerhost in accordance with the present invention;

FIG. 3 is a data flow diagram for the software SNIU in accordance withthe present invention;

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention is directed to a secure network interface unit(SNIU), which is utilized to control communications between a user suchas a computer host and a network. The SNIU intercepts Internet Protocol(IP) datagrams as they are transmitted between the user and the network.The SNIU determines whether each datagram from the user is releasable tothe network and if and how it should be encrypted. The SNIU decryptseach datagram from the network and determines whether it is releasableto the user. When a SNIU releases a datagram from a lower classificationuser or network to a higher classification user or network (i.e., awrite up), the datagram is used to predict the expected response. When adatagram is received from the higher classification user or network, theSNIU compares the datagram to the response which was predicted duringthe write up and, only if they match, releases it (i.e., allows thewrite down) to the lower classification user or network. The SNIUimplements a custom Trusted Session Protocol (TSP) to establishassociations (described later) prior to permitting any communicationbetween a user and a network. The TSP authenticates users, exchangessecurity parameters between SNIUs, and establishes encryption keys foran association. This method of providing security allows existingnetwork assets and existing network protocols to continue to be used,thereby avoiding the need to replace an installed network base forimplementation of the multi-level security system. The connected host oruser equipment and the network backbone are therefore not required to besecure (trusted).

The SNIU according to the present invention can be configured in anumber of different embodiments depending on the particular physicallocations and forms of implementation. These embodiments include astandalone hardware SNIU (“Guard”) and a software SNIU (“Companion”).

The hardware embodiment of the SNIU is implemented as a stand alonehardware device. Such a configuration is desirable, since the Guard SNIUis highly trusted. The Guard SNIU is configured to be inserted betweenexisting hosts and a network. The SNIU is transparent to the host, andany legacy system or application software running on the host. The GuardSNIU provides protection for any host connected to an IP based network.There is no requirement that the attached host computers run a trustedoperating system. The Guard SNIU provides a trusted boundary between theprotected hosts and the unprotected network. Protected means that theconnection is with another known SNIU (a unique digital signatureidentifies the SNIU), the messages are confidential (encrypted) andunaltered (cryptographic residues validate the packet).

The software embodiment of the SNIU is implemented primarily as asoftware function resident in and executed from the host machine. Theonly hardware required is a commercially available cryptographic card(e.g., a Fortezza card) which plugs into the host computer's PCMCIA cardreader, for example. Such a configuration is desirable, since theCompanion SNIU is designed to be installed in-existing portablecomputers, which avoids the additional cost of additional hardwarerequired by a Guard SNIU. The Companion SNIU provides the same networksecurity features as the stand alone SNIU when the host computer isconnected to home enterprise's network. The software SNIU also extendsthat same level of security across the Internet (or any otherunprotected network) when the user is on the road and is remotelycommunicating with the enterprise network or other remotely locatedcomputer devices including a similar Companion SNIU.

The Companion SNIU provides all of the functionality and security of theGuard SNIU as well as complete interperability with these devices. Thesoftware comprising the Companion SNIU is based on the same softwareutilized in the Guard SNIU. The user of the Companion SNIU however,assumes an acceptable risk in exchange for not requiring additionalhardware required by a Guard SNIU, which cannot be circumvented orcorrupted via attacks originating from external hardware. By providingreasonable software protection (not allowing unauthorized personnelphysical access) and software protection (anti-virus protection), aCompanion SNIU can be utilized providing the user with an acceptablelevel of risk. If the user is confident that the software comprising theCompanion SNIU is not circumvented or modified, then he can enjoy thesame degree of confidence as the user of a Guard SNIU device.

Referring to FIG. 1, there is shown an example of a Multi-Level Security(MLS) System in accordance with the present invention. This system 10incorporates the various embodiments of the SNIUs (GuardS andCompanionS) in order to provide MLS for computer networks such as theInternet. For example, the guard devices 14, 16 which are hardwareembodiments of the SNIU are coupled between computer networks 34, 36, 38providing inter-network security. Additional guard devices 12, 18 arecoupled between users such as computer hosts 28 and 30, and therespective networks 34 and 38. The software embodiment of the SNIU areimplemented as companions within computer hosts 24, 26, which providesnetwork security without requiring additional hardware. The auditors 20,22 are also Guard SNIUs which are configured to communicate directlywith the other SNIUs (GuardS and CompanionS) to log audit events andpotentially signal alarms. The above described system 10 enablessecured, and non-secured users such as a web site 40, to communicatewith each other without the danger of compromising security.

During operation, the SNIUs included in the above described system 10communicate with each other thereby creating a global security perimeterfor end-to-end communications and wherein the network may beindividually secure or non-secure without compromising security ofcommunications within the global security perimeter.

System Security Policies

The SNIU devices in accordance with the present invention may implementa number of security policies suitable to the circumstances of a givennetwork environment. The major policy areas are: discretionary accesscontrol; mandatory access control; object reuse; labeling;identification and authentication; audit; denial of service detection;data type integrity; cascading control; and covert channel usedetection.

Discretionary access control is a means of restricting access to objects(data files) based on the identity (and need to know) of the user,process, and/or group to which the user belongs. It may be used tocontrol access to user interface ports based on the identity of theuser. For a single-user computer unit, this mechanism may be implementedin the SNIU, whereas for a multi-user host, the DAC control may beimplemented at the host machine. Discretionary access control may alsobe implemented as discretionary dialog addressing, wherein theaddressing of all communications originated by a user is defined, andfor user discretionary access denial, wherein a user may refuse toaccept a communication from another user.

Mandatory access control is a means of restricting access to objectsbased on the sensitivity (as represented by a classification label) ofthe information contained in the objects, and the formal authorization(i.e., clearance) of the user to access information of such sensitivity.For example, it may be implemented as dialog lattice-based accesscontrol, wherein access requires a correct classification level,integrity level, and compartment authorization, dialog data-type accesscontrol, wherein correct data type authorization is required for access,and cascade protection, wherein controls are provided to preventunauthorized access by cascading user access levels in the network.

Object reuse is the reassignment and reuse of a storage medium (e.g.,page frame, disk sector, magnetic tape) that once contained one or moreobjects to be secured from unauthorized access. To be secured, reused,and assigned to a new subject, storage media must contain no residualdata from the object previously contained in the media. Object reuseprotection may be implemented by port reuse protection, session reuseprotection, dialog reuse protection, and/or association reuseprotection.

Labeling requires that each object within the network be labeled as toits current level of operation, classification, or accreditation range.Labeling may be provided in the following ways: user session securitylabeling, wherein each user session is labeled as to the classificationof the information being passed over it; dialog labeling, wherein eachdialog is labeled as to the classification and type of the informationbeing passed over it; and host accreditation range, wherein each hostwith access to the secured network is given an accreditation range, andinformation passing to or from the host must be labeled within theaccreditation range.

Identification is a process that enables recognition of an entity by thesystem, generally by the use of unique user names. Authentication is aprocess of verifying the identity of a user, device, or other entity inthe network. These processes may be implemented in the following ways:user identification; user authentication; dialog source authentication,wherein-the source of all communication paths is authenticated at thereceiving SNIU before communication is allowed; SNIU sourceauthentication, wherein the source SNIU is authenticated before data isaccepted for delivery; and administrator authentication, wherein anadministrator is authenticated before being allowed access to theSecurity Manager functions.

An audit trail provides a chronological record of system activities thatis sufficient to enable the review of an operation, a procedure, or anevent. An audit trail may be implemented via a user session audit, adialog audit, an association audit, an administrator audit, and/or avariance detection, wherein audit trails are analyzed for variance fromnormal procedures.

Denial of service is defined as any action or series of actions thatprevent any part of a system from functioning in accordance with itsintended purpose. This includes any action that causes unauthorizeddestruction, modification, or delay of service. The detection of adenial of service may be implemented for the following conditions: usersession automatic termination, such as when unauthorized access has beenattempted; user machine denial of service detection, such as detectionof a lack of activity on a user machine; dialog denial of servicedetection; association denial of service detection, such as detection ofa lack of activity between SNIUs; and/or data corruption detection, suchas when an incorrect acceptance level is exceeded.

Covert channel use is a communications channel that allows twocooperating processes to transfer information in a manner that violatesthe system's security policies. Detection of covert channel use may beimplemented, for example, by delay of service detection, such asmonitoring for unusual delays in message reception, or dialog sequenceerror detection, such as monitoring for message block sequence errors.

Details of the Software (Companion) SNIU

Referring to FIG. 2, a block diagram of the Companion SNIU installed ina computer host is shown. The Companion SNIU 44 is implemented as asoftware function within a host computer 42. The SNIU 42 interfaces withthe communications stack of the host computer 58 in order to send andreceive messages over the Ethernet or token ring cable 74. Thecommunications stack 58 is a typical OSI model including a physical 72,data link layer 70, network layer 68, transport layer 66, session layer64, presentation layer 62 and application layer 60. The network layer 68includes an ARP/RARP module which is utilized to process AddressResolution Protocol (ARP) and Reverse Address Resolution Protocol(RARP). As can be seen from FIG. 2, the SNIU 44 is installed such thatit is transparent to other high order software.

The main modules of the SNIU include a Host/Network Interface 46,Session Manager 48, Audit Manager 52, Association Manager 54 andFortezza API 56. The primary data structures included in the SNIU arethe Association Table, Sym_Key Table, Certificate Table, Waiting Queueand Schedule Table. These data structures are described later in thedescription of the protocol.

The Host/Network Interface 46 provides the interfacing between the SNIU44 and communications stack 58. The Fortezza API 56 is a driver for thecard reader 8 included in the host computer 42. The card reader 8 isadapted to receive a Fortezza card which is a PCMCIA card configured toperform integrity and authenticating functions, for example. TheFortezza card performs the integrity function by encrypting messagesleaving the SNIU 44 and decrypting incoming messages. The authenticationfunction is accomplished by the Fortezza card generating and readingdigital signatures which are unique to each SNIU. The Fortezza cardincludes a private key to generate the digital signature and a publickey to read the signatures. The other SNIU modules will be described inconjunction with data flow diagram of FIG. 3.

Referring to FIG. 3, there is shown a data flow diagram for the softwareSNIU. When the host computer communicates with another computer over anetwork, the communications protocol stack within the computer processesthe data to be transmitted. If a user on the computer is transmitting afile to another computer, the user may select the file to send byinteracting with application layers software. The display which the usersees is controlled by presentation layer software.

Session layer software checks the users permission codes to determine ifthe user has access to the file. Transport layer software preparesInternet Protocol Datagrams containing blocks of file data anddetermines that the transmitted file data is properly received andacknowledged or is re-transmitted.

The Host/Network interface 46 is utilized to intercept the data packetstransmitted between the network and data link layers 68, 70. Theinterface 46 is utilized to format the data packets into an appropriateformat depending on whether the data packet is incoming or out going.The interface 46 accomplishes this by removing the hardware addressheader when it receives a data packet and re-applies the same headerwhen the packet is released (even if the underlying IP address headerwas changed). Since the interface in the software SNIU 46 does nothandle ARP and RARP message for the host computer, it can be smallerthan the one utilized in the hardware SNIU. The ARP/RARP module includedin the network layer 68 performs this function.

When the untrusted Host/Network Interface 46 completes re-assembling anIP datagram from a host computer, the datagram is passed to the TrustedComputing Base (TCB) of the SNIU for processing. The TCB is thecollection of hardware and software which can be trusted to enforce thesecurity policy. In the SNIU Guard the trusted Scheduler software modulecontrols the hardware which controls access to memory and guaranteesthat IP datagrams are not passed directly from the host-sideHost/Network Interface module to the network-side Host/network interfacemodule or vice versa. Rather each IP datagram is passed to the SNIUsother trusted software modules (Message Parser, Association Manager,Session Manager, etc.) which determine if the IP datagram is allowed topass through the SNIU and if it is encrypted/decrypted.

In a SNIU companion the hardware is controlled by the host's operatingsystem software and not the SNIU's Scheduler module. Therefore, the SNIUCompanion is inherently not as trust worthy as the SNIU Guard eventhough most of the software is identical.

The Message Parser 50B is the first module in the TCB which processes anIP datagram received from the host computer. The Message Parser 50Bchecks the Association Table 76 and determines whether or not anassociation already exists for sending the datagram to its destination.If no association exists, the datagram is stored on the Waiting Queueand the Association Manager 54 is called to establish an associationbetween this SNIU and the SNIU closest to the destination host. If anassociation does exist, the Session Manager 48 is called to encrypt thedatagram, check security rules, and send the encrypted Protected UserDatagram (POD) to the peer SNIU.

When the Association Manager 54 is called, it prepares two messages toinitiate the association establishment process. The first message is anAssociation Request Message which contains the originating host computerlevel and this SNIU's certificate (containing it's public signaturekey). This message is passed to the Fortezza API 56 which controls. TheFortezza card which signs the message with this SNIU's private signaturekey. The second message is a message intended to evoke a response fromthe destination computer, (“Ping”), such as an ICMP Echo Request messagewhich will be returned to this SNIU if it is received by the destinationhost. Both messages are passed to the network-side Host/NetworkInterface Module 46 to be transmitted to the destination host.

If another SNIU exists on the network between the originating SNIU andthe destination host, the messages are first processed by the SNIU'sreceiving port's Host/Network Interface 46 which reassembles themessages and passes them to the trusted software. The Message Parsermodule 50B passes the Association Request Message to the AssociationManager 54 module and deletes the ping. The Association Manager 54passes the message to the Fortezza API 56 which verifies the digitalsignature. If not valid, the Audit Manager 52 is called to generate anAudit Event Message to log the error. If the signature is valid, theAssociation Manager 54 saves a copy of the received Association RequestMessage in the Waiting Queue, adds this SNIU's certificate to themessage, calls the Fortezza API 56 to sign the message, generates a newping, and passes both messages to the Host/Network Interface module 46to transmit the messages to the destination host. If the messages arereceived by any other SNIU's before reaching the destination host, thisprocess is repeated by each SNIU.

If the destination host computer does not contain the Companion SNIUsoftware, the host's communications protocol stack softwareautomatically responds to the message intended to evoke a response fromit, for example it converts the ping message to a reply message (ICMPEcho Reply) and returns it to the SNIU which sent it. However, thedestination host does not contain any software which can process theAssociation Request Message; so it is ignored (i.e., deleted).

If the destination host computer does contain Companion SNIU software,the host's data link layer software converts the stream of bits from thephysical layer into packets which are passed to the Companion'sHost/Network Interface module 46. The hardware address headers arestripped off of the packets and saved; and the packets are re-assembleinto IP datagrams which are passed to the Message Parser 50B. The pingmessage is ignored; and the Association Request Message is passed to theFortezza API 56 to have the signature verified. If valid, the message ispassed to the Association Manager module 54 which saves the originatinghost and SNIU data and generates an Association Grant Message. Thismessage contains the SNIU's IP address (which is the same as thedestination host's), the SNIU's certificate, the host's security level,and sealer keys for the originating SNIU and the previous intermediateSNIU (if there was one). The sealer keys (a.k.a. Message EncryptionKeys) are explained elsewhere.

The Fortezza API 56 is then called to sign the message which is passedto the Host/Network Interface module 46. The Association Grant Messageis converted from an IP datagram to network packets and passed back tothe host's hardware packet drivers (in the data link layer) fortransmission back to the originating host.

Any intermediate SNIU's which receive the Association Grant Messageprocess the message up through the communications stack protocol layersand which calls the Message Parser 50B to process the message. Thesignature on the message is verified by the Fortezza API 56 and auditedvia the Audit Manager 52 if not valid. Otherwise, the validated messageis processed by the Association Manager 54 module which removes andsaves one of the sealer keys (a.k.a. a release key) which will be usedby this SNIU and the previous SNIU (which generated the key) toauthenticate PUD messages exchanged via this association in the future.The Fortezza API 56 is called to generate and wrap another sealer key tobe shared with the next SNIU in the association path. The new key andthis SNIU's certificate are appended to the message. The Fortezza API 56aligns the message. The Host/Network Interface 46 transmits the messageon its way back to the originating SNIU.

The originating SNIU re-assembles the Association Grant Message via thephysical, data link 70, and network layers 68 as previously described.The signature is validated and audited if necessary. If valid, theAssociation Manager 56 uses the Fortezza API to unwrap the sealerkey(s). If two keys are in the received message, the bottom key is arelease key to be shared with the first intermediate SNIU; and the topkey is an association key to be shared with the peer SNIU (which grantedthe association). If there is only one key, it is the association keywhich is shared with the peer SNIU; and the association path does notcontain any intermediate SNIUs. Once the keys are stored and theAssociation Table 76 is updated, the association is established and theSession Manager 48 is called to transmit the original user datagramwhich was stored in the waiting Queue prior to issuing the AssociationRequest Message.

The Session Manager 48 enforces the security policy, determines whetherIP datagrams received from host computers can be transmitted via thenetwork to their destination host, encapsulates these user datagrams inPUDs using the sealer keys for the appropriate association. The securitypolicy is enforced by comparing the security levels of the host anddestination. If the security level of the destination is at least asgreat as that of the host computer, the Session Manager checks theAssociation Table and identified the appropriate peer SNIU and sealerkey(s). The user datagram is encrypted by the Fortezza API 56 using theassociation key. If the association contains any intermediate SNIUs, theFortezza API 56 calculates a message authorization code using therelease key. The Session Manager 48 creates a PUD addressed from thisSNIU to the peer SNIU, encloses the encrypted user datagram, appends themessage authorization code (if any), and passes the new datagram to theHost/Network Interface module 46 on the network-side of the SNIU. Thedatagram is broken into packets and transmitted as previously described.

If an intermediate SNIU receives the PUD, the data is passed through thedata link layer software 70 to the network layer where the re-assembleddatagram is passed to the Session Manager 48. The source IP address isto identify the release key which is shared with the previous SNIU. TheFortezza API 56 uses the release key to verify the message authorizationcode. If not valid, the Session Manager 48 deletes the datagram andcalls the Audit Manager 52 to generate an Audit Event Message. If thecode is valid, it removes the code from the datagram, and uses thedestination IP address to identify the release key shared with the nextSNIU. The Fortezza API 56 generates a new message authorization code.The Session Manager 48 appends the new code and passes the datagram tothe opposite port's Host Network Interface module.

When the peer SNIU (i.e., the destination IP address) received the PUDand it has been reassembled into a datagram, the Message Parser 50Bpasses the datagram to the Session Manager 48. The source IP address isused to identify the corresponding association key. The Fortezza API 56decrypts the original user datagram. The Session Manager checks themessage authorization code and the security levels of the source anddestination hosts. If the code is valid (i.e., the message was notmodified during transmission over the network) and the security levelsmatch, the decrypted datagram is passed to the Host/Network Interface 46to be released to the destination host. If either is not correct, theAudit Manager 52 is called.

Associations

To establish trust between pairs of SNIUs, within an Internet protocol(IP) based network, the present SNIU uses associations. An associationis a sharing of trusted information developed within the SNIU on an asneeded basis. The SNIU discovers the trusted information it needs, whenit needs it. There is no need for pre-positioned network configurationdata. The SNIU uses custom messages and existing protocols to determinethe existence of other SNIUs and hosts, and maintains that information,each called an association, as long as it is needed and unchanged. TheSNIUs establish an association which provides a trusted communicationspath for a period of variable duration between the SNIUs. While anassociation is open, the two SNIUs use the association's securityparameters to make security decisions for each Internet protocol (IP)packet of information exchanged.

When a host behind a SNIU attempts to communicate with someone else overthe network, the SNIU transmits an Association Request Message and amessage intended to evoke a response from a destination which is not aSNIU according to the present invention (“Ping” message), to thedestination. The Association Request Message is used to identify otherSNIUs in the communications path.

Each SNIU which receives the Association request message authenticatesthe message, sends it and a new Ping on to the destination. The SNIUwhich receives the Reply message to the Ping is the terminating SNIU(i.e., closest to the destination) in the potential association'scommunications path. This SNIU determines if the association should bepermitted, i.e., would not violate the global or local security policy.The terminating SNIU creates an Association Grant Message, inserts itssecurity parameters, and sends it back to the originating SNIU. When theoriginating SNIU receives the Association Grant Message, itauthenticates the message.

Address Resolution Messages

Address Resolution Protocol (ARP) allows a host to find the hardwareaddress of another host on the same network, given its IP address. Thehost broadcasts an ARP. Request message which contains its hardware andIP addresses and the IP address of the target host. The target host (oran intermediate gateway) returns to the requesting host an ARP Responsemessage which contains the hardware address of the target host (or thegateway).

Reverse Address Resolution Protocol (RARP) allows a host which onlyknows its hardware address to obtain an IP address from the network. Thehost broadcasts a RARP Request which contains its hardware address and aserver on the network, returns a RARP Response containing an IP addressassigned to the requester's hardware address.

All ARP and RARP messages have the same format and are contained withinthe frame data area of a single Ethernet frame (they are not IPdatagrams). According to Douglas E. Comer, the format is as follows:

where: HARDWARE TYPE is set to 0001 hex to indicate Ethernet

-   -   PROTOCOL TYPE is set to 0800 hex to indicate IP addresses    -   HLEN (hardware address length) is set to 06 hex bytes    -   PLEN (protocol address length) is set to 04 hex bytes    -   OPERATION is set to 0001 hex for an ARP Request message        -   0002 hex for an ARP Response message        -   0003 hex for a RARP Request message        -   0004 hex for a RARP Response message    -   SENDER'S HA contains the sender's 48 bit Ethernet hardware        address.    -   SENDER'S IP contains the sender's 32 bit IP address    -   TARGET'S HA contains the target's 48 bit Ethernet hardware        address    -   TARGET'S IP contains the target's 32 bit IP address

When a host broadcasts a request message, it fills in all of the dataand the target's hardware address field is set to 000000 hex if an ARP,or the sender's and target's IP address fields are set to 0000 hex if aRARP. When the target machine responds, it fills in the missing addressand changes the operation field to indicate a response message. Duringan ARP, the target machine swaps the sender's and target's addresses sothat the sender's address fields contains its addresses and the target'saddress fields contains the original requesting host's addresses. Duringa RARP, the server stores its addresses in the sender's address fieldsand returns the response to the original sender's hardware address.

When a SNIU Receives a Message, it Performs the Following Processes:

ARP Request: If an ARP Request message is received on a SNIU's port A,the untrusted software in port A's memory segment determines if thesender's IP address is in port A's ARP cache. If not, it creates a newentry in the ARP cache and inserts the sender's hardware and IPaddresses. Otherwise, the sender's hardware address is copied into theentry (overwriting any previous address); and packets (if any) waitingto be sent to the sender's IP address are transmitted. If the target'sIP address is in port A's address list (i.e., a list of IP addresseswhich are reachable from port B), the untrusted software returns an ARPResponse message swapping the SENDER'S and TARGET'S addresses andinserting port A's Ethernet hardware address into the SENDER'S HA field.In either case, the untrusted software passes the ARP Request to theTrusted Computing Base (TCB).

The TCB checks port B's address list for the SENDER'S IP. If theSENDER'S IP is not in port B's address list, the TCB determines whetherthe SENDER'S IP is releasable to port B; and if releasable, inserts itinto port B's address list. Secondly, the TCB determines whether a proxyARP Request should be broadcast from port B. If an ARP Response messagewas not returned by port A, and the target's IP address is not in portA's ARP cache, and the sender's IP is releasable to port B. The TCBcreates a proxy ARP Request Message The TCB inserts port B's hardwareand IP addresses in the SENDER'S address fields, copies the target's IPaddress from the original ARP Request into the TARGET'S IP field, andsignals port B's untrusted software to broadcast the message. Each timethe TCB releases a proxy ARP Request, it creates an Anticipated Messagein the form of a proxy ARP Response message which contains the originalsender's addresses in the TARGET'S fields, the target's IP address inthe SENDER'S IP field, and port A's hardware address in the SENDER'S HAfield. This message is saved in the Anticipated Message list for port Aand will be released to port A's untrusted software for transmission ifthe anticipated ARP Response message is received on port B. Note thatreleasability may involve the TCB modulating ARP Requests from a highnetwork to a low network in order to not exceed the 100 bits per secondcovert channel bandwidth requirement.

ARP Response: If an ARP Response message is received on a SNIU's port A,the untrusted software in port A's memory segment determines if thesender's IP address is in port A's ARP cache. If not, it creates a newentry in the ARP cache and inserts the sender's hardware and IPaddresses. Otherwise, the sender's hardware address is copied into theentry (overwriting any previous address); and packets (if any) waitingto be sent to the sender's IP address are transmitted. Finally, theuntrusted software passes the ARP Response to the TCB.

The TCB checks port B's address list for the SENDER'S IP. If theSENDER'S IP is not in port B's address list, the TCB determines whetherthe SENDER'S IP is releasable to port B; and if releasable, inserts itinto port B's address list. Secondly, the TCB checks the AnticipatedMessage list for port (B and determines whether the ARP Response was dueto a proxy ARP Request made for a request originally received on port B.If the SENDER'S IP matches an entry in the Anticipated Message list andthe message is releasable to port B. The TCB signals port B's untrustedsoftware to create a proxy ARP Response message identical to theAnticipated Message, and removes the message from the AnticipatedMessage list for port B.

RARP Request: If a RARP Request message is received on a SNIU's port A,the untrusted software in port A's memory segment checks a flag todetermine if the SNIU was initialized to act as a RARP server for thenetwork attached to port A. If not, the received message is ignored.Otherwise, the untrusted software passes the RARP Request to the TCB.

The TCB determines whether the RARP Request can be released to port B.If releasable, it creates a proxy RARP Request message copying theTARGET'S HA from the received message and inserting port B's addressesin the SENDER'S HA and IP fields, passes the proxy RARP Request messageto port B's untrusted software for broadcast, and creates an Anticipatedmessage in the form of a proxy RARP Response message. The TCB copies theoriginal TARGET'S HA, inserts port A's hardware address in the SENDER'SHA, and saves it in the Anticipated Message list for port A.

RARP Response: If a RARP Response message is received on a SNIU's portA, the untrusted software in port A's memory segment determines if thesender's IP address is in port A's ARP cache. If not, it creates a newentry in the ARP cache and inserts the sender's hardware and IPaddresses. Otherwise, the sender's hardware address is copied into theentry (overwriting any previous address); and packets (if any) waitingto be sent to the sender's IP address are transmitted. Finally, theuntrusted software inserts the TARGETS IP into port A's address list andpasses the RARP Response to the TCB.

The TCB checks port B's address list for the SENDER'S IP. If theSENDER'S IP is not in port B's address list, the TCB determines whetherthe SENDER'S IP is releasable to port B; and if releasable, inserts itinto port B's address list. Secondly, the TCB determines whether theTARGET'S IP is releasable to port B. If releasable, the TCB creates anew entry in port B's ARP cache and inserts the TARGET'S HA and IP. TheTCB uses the. TARGETS HA to find the appropriate proxy RARP Responsemessage in port B's Anticipated Message List and copies the TARGET'S IPand SENDER'S IP into the Anticipated message signals port B's untrustedsoftware to create a proxy RARP Response message identical to theAnticipated Message and removes the message from the Anticipated Messagelist for port B.

Trusted Session Protocol

Dragonfly units (e.g., SNIUs and Companions) establish associations inorder to authenticate each other, exchange security parameters, andestablish a trusted session for communication Dragonfly uses acombination of custom messages and standard ICMP Echo Request and EchoReply messages to identify Dragonfly units between source anddestination hosts on a network and establish a trusted communicationspath. Once the path and an association between two SNIUs has beenestablished, user datagrams are encapsulated in custom Dragonflymessages called Protected User Datagrams for secure transmission betweenthe two SNIUs. This collection of messages to establish and utilizeassociations is—referred to as the Dragonfly Trusted Session Protocol(TSP).

When a host behind a SNIU attempts to communicate with someone else overthe network, the SNIU stores the datagram from the host in a WaitingQueue and transmits an Association Request Message and an ICMP EchoRequest to the intended destination. The Association Request Message isused to identify other Dragonfly units in the communications path and tocarry the originating SNIU's security parameters. The SNIU inserts theoriginating host's security level, appends its certificate, and signsthe message. The ICMP Echo Request message contains a flag whichindicates that it came from a SNIU. This message is referred to as aDragonfly Ping Message.

Each Dragonfly unit which receives the Association Request Messageauthenticates the message, saves a copy of the message, appends itscertificate, signs the message, sends it on to the destination, andsends a new Dragonfly Ping Message to the destination. When a SNIUreceives a Dragonfly Ping Message from another SNIU, the message isdiscarded and not passed through to the destination. When a destinationhost receives an Association Request Message, it does not recognize theDragonfly custom protocol; so it discards the message. However, thedestination host does recognize the Dragonfly Ping Message as an ICMPEcho Request message; so it returns an ICMP Echo Reply message.Therefore, a SNIU only receives an ICMP Echo Reply if and only if noother SNIU exists between the SNIU which sent the Dragonfly Ping Message(an ICMP Echo Request) and the destination host.

The SNIU which receives the ICMP Echo Reply message is the terminatingSNIU (i.e., closest to the destination) in the potential association'scommunications path. This SNIU determines if the association should bepermitted (i.e., would not violate the security policy). If permitted,the SNIU grants the association, generates an encryption key for theassociation, and encrypts the key using the originating SNIU's publickey (from its certificate). If the saved copy of the Association RequestMessage contained an intermediate SNIU's certificate, the SNIU alsogenerates a release key and encrypts it using the intermediate SNIU'spublic key. The terminating SNIU creates an Association Grant Message,stores the encrypted key(s), inserts the destination host's securitylevel, appends its certificate, signs the message, and sends it onto theoriginating SNIU. Each intermediate SNIU (if any exist) which receivesthe Association Grant Message authenticates the previous SNIU'ssignature, extracts the release key, generates a new release key for thenext SNIU, encrypts the key using the public key (from the certificatein the saved copy of the Association Request message) of the next SNIU,removes the previous intermediate SNIU's certificate and signature,appends its own certificate and signature, and sends the message on thereturn path. When the originating SNIU receives the Association GrantMessage it authenticates the message and extracts the key(s).

Once association is granted, the originating SNIU fetches theoriginating host's datagram from the Waiting Queue and prepares to sendit to the terminating SNIU in the newly established association. TheSNIU uses the association key to encrypt the datagram for privacy andstore it and the encryption residue into a new datagram from theoriginating SNIU to the terminating SNIU. If the association containsintermediate SNIUs, the originating SNIU uses the release key tocalculate a second encryption residue and appends it to the datagram.Finally, the SNIU transmits the protected user datagram to the peer SNIUin the association.

When the protected user datagram is received by an intermediate SNIU (ifany in the path), the intermediate SNIU fetches the release keycorresponding to the previous SNIU and uses the release key to validatethe datagram. If valid, the SNIU removes the release key residue fromthe datagram and checks to determine whether there are more intermediateSNIUs in the path before reaching the terminating SNIU. If anotherintermediate SNIU exists, the release key corresponding to the nextintermediate SNIU is used to calculate a new release residue which isappended to the datagram. In either case, the datagram is sent on itsway out the opposite the opposite port from which it was received.

When the terminating SNIU receives the protected user datagram, it usesthe association key corresponding to the originating SNIU to decrypt andvalidate the datagram. If the source and destination hosts are at thesame security level (i.e., a write-equal situation), the decrypteddatagram is sent out the opposite port to the destination host. If thesource host has a lower security level than the destination (i.e., awrite-up situation), the SNIU predicts the response from the destinationand saves it before sending the decrypted datagram to the destinationhost. If the source host has a higher security level than thedestination (i.e., a write-down situation), the received datagram (i.e.,a response to a previous datagram from the lower level host) waspredicted by the SNIU which sent the protected datagram. Therefore, thisSNIU is assured that the classification of the received datagram isdominated by the lower level destination host; so the datagram isreleased to the destination. If a SNIU receives a user datagram from anative host which would be a write-down to the destination host and nopredicted datagram is found, the received datagram is erased and theattempted write down is audited.

Message Processing Tables

There are three tables which are used to process in-coming and out-goingmessages; the Association Table, the Symmetric Key Table (Sym_Key), andthe Certificate Table. Each SNIU has two Association tables one for eachport Each entry contains data corresponding to a particular source ordestination address. The Sym_Key table contains data corresponding to aparticular message encryption key (MEK) which could be used as a releasekey or an association key. The Certificate table contains recentlyreceived certificates from other SNIUs.

Each table consists of a linked list of tokens in which the data for anentry in the table is stored in a token. The tokens for each table havea unique data structure and are linked together in ‘free’ lists duringinitialization. When a new entry is made in one of the tables, a tokenis removed from the free list for that table's tokens, the data for thenew entry is inserted in the appropriate fields of the token, and thetoken is linked at the top of the table. When an entry is removed from atable, the ‘previous’ and ‘next’ tokens are linked, the data fields inthe token are cleared, and the token is linked at the bottom of theappropriate free list. Whenever the data in an entry is used, the tokenis removed from the table and relinked at the top of the table. In thisway, the oldest (i.e., least used) entry is at the bottom of the table.If a new entry is needed and the free list is empty, the bottom token isremoved from the table, the data fields are cleared, the new entry'sdata is inserted, and the token is linked at the top of the table. Inaddition, when a SNIU removes the bottom (oldest unused) token in theSym_Key Table, it also removes every token in the Association Tablewhich pointed to the removed key. A SNIU does not terminate anassociation when a certificate, key, or Association Table entry isremoved because many valid entries using the same association couldstill exist.

A token for the Association Table has the following data structure:

where:

-   -   NEXT is a pointer to the next token in the table or list    -   PREVIOUS is a pointer to the previous token in the table or list    -   IP ADDRESS is the IP address of the source/destination    -   PEER SNIU IP ADDRESS is the address of the other terminating        SNIU for the association    -   ASSOCIATION KEY POINTER points to the association MEK in the        Sym_Key table    -   RELEASE KEY POINTER points to the release MEK in the Sym_Key        table    -   ASSOC-TYPE is set to 0001 hex for “pending”        -   0002 hex for “host”        -   (i.e., the entry is for a host destination)        -   0003 hex for “sniu”        -   (i.e., the entry is for a SNIU destination)        -   0004 hex for “native host” (i.e., no peer SNIU)        -   0005 hex for “audit catcher”    -   RELKEY-TYPE is set to 0001 hex for “in” (i.e., use to validate        release key residue)        -   0002 hex for “out”        -   (i.e., use to add release key residue)        -   0003 hex for “both”    -   SECURITY-LEVEL indicates the security level—of the        source/destination    -   AC-CLIENT indicates if the source/destination is an audit        catcher client    -   A token for the Sym_Key Table has the following data structure:

where:

NEXT is a pointer to the next token in the table or list

PREVIOUS is a pointer to the previous token in the table of list

DISTINGUISHED NAME is the 128 byte name in certificate from the otherSNIU using this key

MEK is the 12 byte wrapped key (association or release) shared with theanother SNIU

IV is the 24 byte initialization vector associated with the MEK

CERTIFICATE POINTER points to the other SNIU's certificate in theCertificate table

INDEX is a Fortezza card key register index which indicates if and wherethe key is loaded (1-9 are valid key register indexes, 0 indicates thatthe key is not loaded on the Fortezza)

SPARE is an unused byte to keep addressing on 32-bit boundary

Dragonfly Message Flag

Any message (IP datagram) which is generated or modified by a Dragonflyunit contains a Dragonfly Message Flag in the last four bytes of thedatagram. The first byte is the message type field; the second byte isthe message format field; and the third and fourth bytes are theDragonfly Flag. Note that all Dragonfly message types are signed exceptfor Dragonfly Ping and Protected User Datagram (PUD) Messages. Note thata PUD uses MEK residues for integrity and authentication.

Message Type: 51. Audit Event 52. Audit Catcher List 53. Audit CatcherCheck-In 54. Audit Mask 55. Host Unknown 56. Association Request 57.Association Grant 58. Association Denial (currently not implemented) 59.Association Unknown 60. Protected User Datagram 61. Receipt 62.Certificate Revocation List 63. Dragonfly Ping 64. SNIU Initialization65. Association Established 66. Release Key Unknown Message Format: 46.Signed Type I (source SNIU's certificate and signature) 47. Signed Type2 (source and intermediate SNIU's certificates and signature) 48. PUDType I (Association MEK residue) PUD Type 2 (Association MEK and ReleaseMEK residues) Dragonfly Flag: dfdf hexWaiting Queue and Schedule Table

The Waiting Queue is used to store IP datagrams for potential futureprocessing based upon some anticipated vent. For every entry made in theWaiting Queue, a corresponding entry is made in the Schedule Table. TheSchedule Table is used to automatically process entries in the WaitingQueue if they have not been processed within some pre-determined amountof time (i.e., the anticipated event does not occur). The Schedule Tableentry contains a time-out field (which is set to the current time plussome reasonable delta representing the maximum waiting period) and afunction pointer (which indicates which subroutine should be called iftime expires before the Waiting Queue entry is processed). The ScheduleTable is checked in the main executive loop of the TCB; expired entriesare removed; and the corresponding datagrams in the Waiting Queue areprocessed by the designated subroutine.

For example, when a SNIU receives a user datagram from a native hostwhich is destined for another host for which there is no existingassociation, the SNIU stores the user datagram in the Waiting Queue andtransmits an Association Request Message. When the Association GrantMessage is received, the user datagram is removed from the WaitingQueue, the corresponding Schedule Table entry is deleted, and the userdatagram is encrypted and sent to the peer SNIU of the association. Ifan Association Grant Message is never received, the Schedule Table entryexpires which calls a subroutine to delete the user datagram from theWaiting Queue.

Another example is when SNIU sends an Audit Event Message to an AuditCatcher. The transmitted datagram is stored in the Waiting Queue. Whenthe Receipt Message is received from the Audit Catcher, the originalAudit Event datagram is removed from the Waiting Queue and thecorresponding Schedule Table entry is deleted. If the Schedule Tableentry expires, the designated subroutine is called which re-transmitsthe Audit Event Message stored in the Waiting Queue and a new entry ismade in the Schedule Table.

Generating and Exchanging MEKs

Message Encryption Keys (MEKs) are generated during the associationestablishment process (previously) described) and are exchanged via theAssociation Grant Message. When a SNIU generates an MEK itsimultaneously generates an initialization vector (IV).

When a SNIU exchanges an MEK with another SNIU, it generates a randomnumber, RA, which is required to encrypt (i.e., wrap) the MEK. The keyexchange algorithm is designed so that only the sending and receivingSNIUs can decrypt the MEK and use it. The sender wraps the MEK fortransmission using the destination's public key, RA, RB (which is alwaysset=1), and the sender's private key. IVs which were generated withrelease keys are transmitted in the clear with the wrapped MEK in theAssociation Grant Message. IVs which were generated with associationkeys are ignored. The recipient unwraps the key using its private key,RA, RB, and the sending SNIU's public key. Once unwrapped, the safeexchange is complete.

Each SNIU re-wraps the MEK using its storage key (Ks), stores the MEKand the IV (if the MEK is a release key) in the Sym_Key Table, storesthe pointer to the MEK in the Association Table and stores theDistinguished Name (of the other SNIU sharing this MEK) in the Sym_KeyKey Table entry.

Using MEKs and IVs

Message Encryption Keys (MEKs) are used as association and release keysto provide confidentiality, integrity and authentication of userdatagrams during an association between two SNIUs. IVs are used toinitialize the feedback loop in the Skipjack encryption algorithm formost modes of operation. Encrypting identical data using the same MEK,but different IVs, will produce different ciphertext. In fact, theFortezza card requires the user to generate a new IV for each encryptionevent in order to assure that each message looks different whenencrypted.

When a SNIU encrypts a user datagram it first generates a new IV for theassociation key, encrypts the datagram, appends the encryption residuefor integrity and authentication purposes, and appends the new IV. Ifthe association involves intermediate SNIUs, the SNIU does a secondencryption operation (on the new ciphertext, residue, and IV) using therelease key and release key IV. The release key IV is never changedsince the encrypted data is always guaranteed to be unique even if theoriginal datagram was not. The release key residue is appended to theprotected user datagram. The completed protected user datagram istransmitted.

Received Message Processing

When a SNIU receives an IP datagram it checks the destination address inthe header and determines if it is the intended recipient. Then, itchecks the last four bytes of the IP datagram for the Dragonfly MessageFlag and determines the type and format of the received message.

Destination SNIU Message Processing

When a SNIU receives an IP datagram which is addressed to it, themessage should be one of the following types of Dragonfly formattedmessages. If it is not, the SNIU will audit the event. The onlyexceptions are ICMP Echo Request messages which are processed by thereceiving port's untrusted software and not passed to the trustedcomputing base.

51. Audit Event: If the SNIU is not configured to be an Audit catcher,it will audit the event sending the source IP address of the, receivedmessage to its primary Audit Catcher. If the SNIU is configured to be anAudit Catcher, it verifies the signature on the message, increments itsreceived audit event sequence number, generates a time-stamp, and printsthe sequence number, time-stamp, source IP address, and ASCII characterstring from the message. Once the event has been recorded, the AuditCatcher SNIU generates a Receipt Message (copies the audit event counterfrom the received message and inserts it in the message number field)and sends it.

52. Audit Catcher List: The SNIU verifies the signature on the message,stores the new list of Audit Catchers in the Configuration Table,generates a SNIU Initialization Message, generates a Receipt Message,and updates the Audit Catcher Check-In Message stored in the WaitingQueue.

53. Audit Catcher Check-In: If the SNIU is not configured to be an AuditCatcher, it will audit the event sending the source IP address of thereceived message to its primary Audit Catcher. If the SNIU is configuredto be an Audit Catcher, it verifies the signature on the message,generates a time-stamp, prints the time-stamp and source IP address, andcompares the audit mask in the received message with the current mask.If they do not match, the current audit mask is sent to the SNIU whichjust checked-in. Note that the period between check-ins is a parameterin each SNIU's configuration data. The audit catcher does not return aReceipt Message in any case.

54. Audit Mask: The SNIU verifies the signature on the message, storesthe new audit mask in the Configuration Table and the Audit CatcherCheck-In Message stored in the Waiting Queue, generates a ReceiptMessage, and audits the event (in case someone else other than the AuditCatcher is distributing new audit masks).

55. Host Unknown: When a SNIU receives a valid Protected User Datagram,but cannot find the destination's Association Table entry, it sends aHost Unknown Message back to the originating SNIU and audits the event.The originating SNIU verifies the signature on the received Host UnknownMessage, extracts the original destination host's IP, removes the host'sentry from its Association Table and audits the event it does not removethe peer SNIU's entry nor entries from the Sym_Key Key Table as theymight be supporting other associations.

56. Association Request: This message should only be sent to nativehosts and intercepted by SNIUs; but a SNIU should never be thedestination.

57. Association Grant: The SNIU verifies the signature in the datagramand updates the receiving port's Association Table entries for the peerSNIU and host destination. The SNIU determines if an entry exists forthe peer SNIU. If not the SNIU creates a new entry for the peer SNIU andmarks the association type as ‘sniu’. In either case, the SNIU extractsand unwraps the association MEK (and release MEK if needed), stores there-wrapped key(s) in the Sym_Key Table (being careful to over-write theold keys without changing the pointers to the keys if some alreadyexisted), and marks the release key type as ‘out’ (if a release keyexists).

If the received message indicates that existing release keys are to beused, the SNIU searches the Association Table for ‘sniu’ type entriesand checks the DN of each Sym_Key Key Table entry identified via therelease key pointer. The SNIU compares that DN with the DN in the bottomcertificate in the received message. If a match is found, the releasekey pointer is copied to the Association Table entry for the peer SNIUof this new association. If no match can be found, the SNIU generates aRelease Key Unknown Message. This message is generated by modifying thereceived Association Grant Message. The destination address (its IP) isswapped with the peer SNIU's address (i.e., the association grantingSNIU's IP in the data section of the datagram. The previous SNIU'scertificate is replaced with this SNIU's certificate so the previousSNIU can wrap the new release key and return to this SNIU in theAssociation Grant Message. The signature at the bottom is removed. TheMessage number is changed from 58 to 66. The new message is signed andsent back to the previous SNIU in the path. Finally, the associationtype field of the peer SNIU's entry in the Association Table is changedback to ‘pending’. If a Release Key Unknown Message is transmitted, theSNIU waits for the new release key in another Association Grant messagebefore continuing.

If the peer SNIU's Association Table entry is complete, the SNIU findsthe entry for the destination host, changes the association type from‘pending’ to ‘host’, inserts the peer SNIU's IP copies the associationand release key pointers and release key type from the peer SNIU'sentry, and copies the destination host=s security level from thereceived message.

Once the receiving port's Association Table has been updated, the SNIUfinds the original host's user datagram in the Waiting Queue, removesthe corresponding entry from the Schedule Table, and compares the sourceand destination security levels to determine it the user datagram can besent to the destination. If the source's security level is dominated by(i.e., less than or equal to) the destination's security level, the SNIUcreates a Protected User Datagram (PUD). The SNIU sets the destinationto the peer SNIU's IP, sets the protocol type to indicate a DragonflyMessage, uses the association key to encrypt the entire receiveddatagram and prefixed source host's security level, inserts theciphertext and IV, appends the association residue, generates andinserts a release residue (if the destination host's Association Tableentry contains a pointer to a release key), appends the appropriateDragonfly Message Flag, and sends the datagram. If the source host isnot dominated by the destination (i.e., a potential write-down), theattempted write-down is audited. This procedure is repeated for eachentry in the Waiting Queue which is intended for the same destination.

58. Association Denial: (currently not implemented)

59. Association Unknown: A SNIU sends an Association Unknown Message(and generates audit notices) when a Protected User Datagram orAssociation Exists message is received and a corresponding AssociationTable entry does not exist. The message is sent back to the source SNIUand contains the destination SNIU's IP address. When a SNIU receives anAssociation Unknown Message, it deletes every entry in the AssociationTable in which the peer SNIU's IP matches the returned destination SNIUIP. Subsequent user datagrams from the same host sent to the samedestination will initiate an Association Request to re-establish theassociation.

60. Protected User Datagram (PUD): The SNIU uses the source IP to findthe peer SNIU's entry in the receiving port's Association Table andretrieve the association key to decrypt and validate the receiveddatagram. If the decryption residue does not match, the event isaudited. Otherwise, the SNIU uses the destination host's IP to find theappropriate entry in the opposite port's Association Table, retrievesthe destination host's security level, and compares it to the securitylevel in the received datagram. If a write-up situation, the SNIUgenerates an anticipated message. However, regardless of the relativesecurity levels, the decrypted and validated user datagram is sent tothe destination host.

If the decrypted and validated datagram is a broadcast message, the SNIUcompares the security level of the received datagram and the securitylevel of the opposite port. If the security level of the opposite portdominates that of the datagram, the SNIU releases the datagram Out theopposite port.

If a terminating SNIU receives a PUD and cannot find the peer SNIU'sentry in the Association Table, the SNIU returns an Association UnknownMessage (containing this SNIU's IP) and audits the event. If thereceiving SNIU validates the residue but cannot deliver the userdatagram because it cannot fund the destination host in the AssociationTable, then the SNIU returns a Host Unknown Message (containing thedestination host's IP) to the originating SNIU and audits the event.

61. Receipt: A Receipt Message is sent by an Audit Catcher to a SNIU fora SNIU Initialization or an Audit Event message. The SNIU uses themessage number in the received datagram to locate the saved copy of theoriginal message in the Waiting Queue and remove it and thecorresponding Schedule Table entry. If the original message was a SNIUinitialization Message, the SNIU locates the Association Table entry forthe Audit Catcher and changes the association type from ‘pending’ to‘audit catcher’. If time expires in the Schedule Table entry before theReceipt Message is received the SNIU will retransmit the originalMessage. If no receipt is received after TBD attempts, the SNIU willswitch to the next Audit Catcher in its list. If all Audit Catchers areattempted without success, the SNIU will check a configuration parameterto determine whether to continue without audit or halt.

SNIUs issue Receipt Messages to the source for Audit Catcher List, AuditMask, and Certificate Revocation List messages. When the source receivesa receipt, it uses the returned message number to remove the copy of themessage from the Waiting Queue and the corresponding Schedule Tableentry. Refer to the section above. “Waiting Queue and Schedule Table”,for more details.

62. Certificate Revocation List: If a Certificate Revocation List (CRL)is received the SNIU returns a receipt to the source and checks theSym_Key Table far any keys which were received from (or sent to) anotherSNIU with a revoked certificate. For each entry which contains theDistinguished Name (DN) of a revoked certificate the SNIU deletes thecertificate from the Certificate Table (if it is still there), deletesthe Sym_Key Key Table entry, and deletes every entry in the AssociationTable which pointed to the key. Note that deleting a table entry meansto unlink the token from the table, clear the token's memory, andre-link the token in the token's free list.

63. Dragonfly Ping: This message can only be received by a SNIU which isthe terminating SNIU in an association (i.e., the closest SNIU to thedestination host). This SNIU originally transmitted a Dragonfly PingMessage (in the form of an ICMP Echo Request) along with an AssociationRequest Message to some unknown destination which converted the EchoRequest to an Echo Reply, returned it, and ignored the AssociationRequest Message (which could only be processed by another SNIU).

Upon receiving this message the SNIU checks the originating SNIU IP inthe data section of the received message to determine if it is the onlySNIU in the association (i.e., the only SNIU between the originatinghost and the destination host). If it was the originator, the SNIU usesthe source IP address to find the destination's entry in the AssociationTable, changes the association type from ‘pending’ to ‘native host’,sets the security level to that port's security level, finds theoriginal host's user datagram in the Waiting Queue, removes thecorresponding entry from the Schedule Table, and compares the source anddestination security levels to determine if the user datagram can besent to the destination. If the comparison indicates a write-upsituation, the SNIU generates and saves an anticipated message andreleases the original datagram to the destination port. If a write-downsituation, the SNIU deletes the datagram and audits the attemptedwrite-down. If a write-equal, the datagram is released to thedestination port. This procedure is repeated for each entry in theWaiting Queue which is intended for the same destination.

If this SNIU was not also the originating SNIU, the originating SNIU'sand originating host's IP addresses in the data section of the receivedEcho Reply are used to identify the peer SNIU's entry in the AssociationTable and fetch the Association Request Message which was saved in theWaiting Queue (and delete the corresponding entry from the ScheduleTable). Then the SNIU creates or updates three Association Tableentries. First, it creates an entry (if it doesn't already exist) in thereceiving port's Association Table for the original destination host(using the source IP from the received datagram header), marks theassociation type as ‘native host’ and stores the receiving port'ssecurity level in the security level field.

Second, it updates the entry in the opposite port's Association Tablefor the peer SNIU. If the peer SNIU's entry is already complete (i.e.,the association type field is marked as ‘sniu’), the SNIU verifies thatthe DN in the Sym_Key Table entry for the association key is still validand returns an Association Exists Message (containing the originaldestination host's IP and security level) instead of an AssociationGrant Message to the peer SNIU. If the DN or the certificate haschanged, the SNIU deletes all entries in the Association Table whichrefer to this entry as the peer SNIU and then continues as if this wasthe first association with this peer SNIU and over-writes the old data.If the peer SNIU entry in the Association Table is incomplete (i.e., theassociation type field is marked as ‘pending’), the SNIU continues tofill in the missing data as follows. If the release key type is marked‘out’ or ‘both’, then the association path contains at least oneintermediate SNIU; therefore, the SNIU must extract the peer SNIU'scertificate from the Association Request Message and store it in theCertificate Table. If a certificate with this DN already exists, but isnot identical, then the SNIU must locate and delete all other Sym_KeyKey Table and Association Table entries referencing this certificate.

In either case, the SNIU stores the pointer to the certificate the DN ina Sym_Key Table entry, and stores the pointer to the Sym_Key Key Tableentry in the association key pointer field of the Association Tableentry. If there aren't any intermediate SNIUs, the pointer in therelease key pointer field is copied to the association key pointerfield; and the release key pointer field is cleared. In either case, theassociation type is changed from ‘pending’ to ‘sniu’. The SNIU generatesthe association key and stores the key in the Sym_Key Key Table entry.If a release key is needed for an intermediate SNIU, the SNIU mustdetermine if a release key associated with the intermediate SNIU'scertificate's DN already exists. The SNIU uses the release key pointerin each entry with association type ‘sniu’ in the Association Table tolocate the Sym_Key Key Table entry of every release key. If a match isfound the pointer to that Sym_Key Key Table entry is copied. Otherwise,a new release key is generated and stored.

The third Association Table entry is for the originating host. It's IPand security level are in the data portion of the Association RequestMessage. The security level is copied to the entry, the association typeis marked as ‘host’, and the rest of the data is copied from the peerSNIU entry.

Once the Association Table entries are updated, an Association GrantMessage is generated. The SNIU stores the source address from theAssociation Request Message (i.e., the association originating SNIU'sIP) in the destination address and stores the destination host's IP inthe source address (a little IP spoofing). The SNIU fills in the datasection by storing its IP, the destination host's security level, theassociation key data (wrapped key and RA), and if necessary, the releasekey data (the wrapped key, RA and IV). If a release key for the firstintermediate SNIU on the return path existed previously to establishingthis association, the SNIU sets a flag (instead of storing the releasekey in the message) to instruct the intermediate SNIU to use theexisting release key. The Dragonfly Message Flag is inserted at thebottom marking the type as Association Grant and the format as SignedType I to indicate only one certificate. The message is signed and sent;and the event is audited.

64. SNIU Initialization: This message is sent by a SNIU to it's primaryAudit Catcher during the SNIU's initialization to determine whether theAudit Catcher is ready to support the SNIU. Depending upon aconfiguration parameter, the SNIU may not allow any other messageprocessing until a Receipt Message is received from the Audit Catcher.Upon receiving this message, the Audit Catcher verifies the signature onthe message, makes an entry in its receiving port's Association Tableusing the source 1P, marks the association type as ‘sniu’, returns aReceipt Message, and compares the audit mask in the received messagewith the current mask. If they do not match, the current audit mask issent to the SNIU in an Audit Mask Message.

65. Association Exists: If a SNIU receives an Association RequestMessage, determines that it is the terminating SNIU, and that it alreadyhas an existing association with the requesting SNIU; the terminatingSNIU will return an Association Exists—Message, instead of anAssociation Grant Message.

When a SNIU receives an Association Exists Message, it verifies thesignature on the message and checks the receiving port B AssociationTable for an entry for the source SNIU. If the source (i.e., peer) SNIUentry exists, this SNIU uses the destination host's IP address in themessage to update (or create, if necessary) the destination host'sAssociation Table entry. It changes the association type from ‘pending’to ‘host’, copies the MEK pointers from the peer's SNIU entry, andcopies the security level from the received message. Once theAssociation Table has been updated, the SNIU locates the user datagram(which was stored in the Waiting Queue until the association wasestablished) and processes the datagram for transmittal the same as if anormal Association Grant Message had been received (see descriptionabove).

If an entry cannot be found in the Association Table for the sourceSNIU, then this SNIU will return an Association Unknown Message to thesource SNIU. The message will contain this SNIU's IP address to indicatewhich association needs to be deleted. Then the SNIU will locate theoriginal host's datagram saved to the Waiting Queue, reset its time-outvalue in the Schedule Table, and schedule a new event (after some TBDseconds delay) to regenerate a new Association Request Message.

66. Release Key Unknown: A SNIU may receive an Association Grant Messagewith a flag set to indicate that an existing release key should be used.However, if the SNIU cannot locate the release key, it sends a ReleaseUnknown Key Message back to the previous SNIU requesting it to generatea new release key.

This message is generated by modifying the received Association GrantMessage. The destination address (the association originating SNIU's IP)is swapped with the terminating SNIU's address (i.e., the associationgranting SNIU's IP) in the data section of the datagram. The previousSNIU's certificate is replaced with this SNIU's certificate so theprevious SNIU can wrap the new release key and return it to this SNIU inthe Association Grant Message. The signature at the bottom is removed.The message number is changed from 58 to 66, and the new message issigned and sent back to the previous SNIU in the path.

Note that this message is addressed to the terminating SNIU whichgenerated the original Association Grant Message. However, this messageis intended for the previous SNIU in the new a association's path.Therefore, if the first SNIU to receive this message is an intermediateSNIU, it should process the message and not send it on to theterminating SNIU.

If a SNIU receives a Release Key Unknown Message and it is thedestination, the SNIU must be the terminating SNIU which granted theassociation. The SNIU verifies the signature on the message, swaps thedestination address (its IP) with the peer SNIU address (the associationoriginating SNIU's IP) in the data section, uses the new destinationaddress to locate the peer SNIU's entry in the receiving port'sAssociation Table, removes the certificate from the message, andcompares the DN in the certificate' with the DN in the Sym_Key Tableentry indicated via the peer SNIU's release key pointer. If the DN doesnot match, the SNIU audits the error and over-writes the DN entry withthe DN from the certificate. In either case, the SNIU stores thecertificate in the Certificate Table (over-writing the old one if acertificate with the same DN already exists), generates a new releasekey, over-writes the old release key in the Sym_Key Key Table with thenew release key (Ks-wrapped), wraps the key using the public key fromthe received certificate, stores the wrapped release key in the message,changes the message number from 66 back to 58, stores its certificate inthe message, signs and sends it.

Broadcast: Various messages (non-Dragonfly) are broadcast to everydevice on a network. When a broadcast message is received, the SNIUcreates a. Protected User Datagram (containing the received broadcastmessage and the security level of the port on which the message wasreceived) for every peer SNIU to the opposite port's Association Tableand sends them.

Non-Destination SNIU Message Processing

When a SNIU receives an IP datagram which is not addressed to it, themessage should be one of the following types of Dragonfly formattedmessages. If it is not, the SNIU will assume the IP datagram is from anative host.

Audit Event: The SNIU verifies the signature on the Message and releasesthe message out the opposite port.

52. Audit Catcher List: The SNIU verifies the signature on the messageand releases the message out the opposite port.

53. Audit Catcher Check-In: The SNIU verifies the signature on themessage and releases the message out the opposite port.

54. Audit Mask: The SNIU verifies the signature on the message andreleases the message out the opposite port.

55. Host Unknown: The SNIU verifies the signature on the message andreleases the message out the opposite port.

56. Association Request: When a SNIU receives an Association Request, itvalidates the signature at the bottom of the message and checks thereceiving port's Association Table for an entry with the originatingSNIU's IP address. If it cannot find an entry, it creates one, marks theassociation type as ‘pending’, stores the previous SNIU' certificate inthe Certificate Table, updates the Sym_Key Table entry for theDistinguished Name (DN), stores the pointer to the Sym_Key Table entryin the release key pointer field in the Association Table entry, andstore a copy of the received message in the Waiting Queue (and makes acorresponding entry in the Schedule Table If a certificate with this DNalready exists, but is not identical then the SNIU must locate anddelete all other Sym_Key Table and Association Table entries referencingthis certificate. If the previous SNIU was an intermediate SNIU (i.e.,the Message Format field of the Dragonfly Message Flag is ‘Signed Type2’), this SNIU marks the release key type field as ‘out’ and removes theprevious SNIU's certificate and signature. In either case, this SNIUappends its certificate and signature and sends the message out otherport. It does not make any entry in the out-going port's AssociationTable.

Finally, the SNIU creates and sends a Dragonfly Ping Message (in theform of an ICMP Echo Request) to the destination host. The SNIU storesthe originating SNIU and originating host's IP addresses in the datagramand sets the Dragonfly Flag, but does not sign the message.

57. Association Grant: The SNIU validates the signature at the bottom ofthe received datagram and if not correct deletes the datagram and auditsthe event. Otherwise, since it is not the destination, the SNIU is anintermediate SNIU somewhere in the path between the two peer SNIUs. TheSNIU creates an entry (if one doesn't already exist) in the receivingport's Association Table for the IP of the terminating SNIU whichgranted the association (in the data section of the Association GrantMessage), marks the association type as ‘sniu’, marks the release keytype as ‘m’ (if the format is ‘Signed Type 1’) or ‘both’ (if the formatis ‘Signed Type 2’), extracts the release key data (i.e., the wrappedMEK, RA and IV), unwraps and stores the release key in the Sym_KeyTable, stores the release key IV in the same Sym_Key Table entry, storesthe pointer to the release key in the Association Table, stores thecertificate in the Certificate Table, and stores the pointer to thecertificate and the DN in the Sym_Key Table entry. If a certificate withthis DN already exists, but is not identical, then the SNIU must locateand delete all other Sym_Key Table and Association Table entriesreferencing this certificate.

If the received Message contains a flag indicating that an appropriaterelease key already exists, the SNIU uses the release key pointer inevery other ‘sniu’ type entry in the Association Table and compares theDNS of the certificates associated with the release keys. If a match isfound, the pointer to the matching Sym_Key Table entry is copied to thenew Association Table entry. If no match is found, the SNIU generates arelease Key Unknown Message. This message is generated by modifying thereceived Association Grant Message. The destination address (i.e., theassociation originating SNIU's IP) is swapped with the peer SNIU'saddress (i.e., the association granting SNIU's IP) in the data sectionof the datagram. The previous SNIU's certificate is replaced with thisSNIU's certificate so the previous SNIU can wrap the new release key andreturn it to this SNIU in the Association Grant Message. The signatureat the bottom is removed. The message number is changed from 58 to 66.The new message is signed and sent back to the previous SNIU in thepath. Finally, the association type field of the terminating SNIU'sentry in the Association Table is changed back to ‘pending’. If aRelease Key Unknown Message is transmitted, the SNIU waits for the newrelease key in another Association Grant Message before continuing.

Next, the SNIU uses the destination IP address in the header of thereceived Association Grant Message to find the destination's entry inthe opposite port's Association Table. If the association type is‘pending’, the SNIU determines whether an existing release should beused or if a new one should be generated. The SNIU uses the release keypointer to fetch the saved certificate of the next SNIU and compares itsDN with the DN associated with the other release keys identified via therelease key pointers in other ‘sniu’ type entries. If a match is found,the pointer to the release key's entry in the Sym_Key Table is copied tothe new Association Table entry. If a match is not found, the SNIUgenerates new release key data (an MEK, RA, and IV) and stores thewrapped MEK and IV in the Sym_Key Key Table entry. In either case, theSNIU changes the association type to ‘sniu’. If the release key type is‘NULL’ the SNIU changes it to ‘in’; otherwise, it is marked as ‘both’.

The SNIU uses the original destination host's IP (the source IP in theheader of the Association Grant Message) and the original SNIU's IP(i.e., the destination IP in the header of the Association GrantMessage) to locate the Association Request Message which was saved inthe Waiting Queue and delete it and the corresponding entry in theSchedule Table.

Finally, the SNIU rebuilds the Association Grant Message to send on tothe destination. The SNIU copies the received datagram up to andincluding the association key data and the certificate of the SNIU whichoriginated the Association Grant Message, inserts its certificate andthe release key data (or a flag indicating to use an existing releasekey), and signs and sends the datagram.

58. Association Denial: Currently not implemented.

59. Association Unknown: The SNIU verifies the signature on the messageand releases the message out the opposite port.

60. Protected User Datagram: The SNIU uses the source IP address to findthe appropriate entry in the receiving port's Association Table, fetchesthe release key, and verifies the release key residue. If the releaseresidue is not correct the datagram is delete and the event audited.Otherwise, the SNIU uses the destination IP address to find theappropriate entry in the opposite port's Association Table, fetches therelease key, generates the new release residue, overwrites the oldrelease residue, and sends the datagram on in to the destination.

61. Receipt: The SNIU verifies the signature on the message and releasesthe message out the opposite port.

62. Certificate Revocation List: The SNIU verifies the signature on theMessage and releases the message out the opposite port.

63. Dragonfly Ping: The SNIU ignores (i.e., deletes) the ICMP EchoRequest and does nothing else. It should also receive an AssociationRequest Message which it will process (see description above). Note thatif the datagram is a standard ICMP Echo Request (i.e., no DragonflyFlag), it is treated as any other Native Host Message (see descriptionbelow).

64. SNIU Initialization: The SNIU verifies the signature on the messageand releases the message out the opposite port.

65. Association Exists: When an intermediate SNIU receives this message,it verifies the signature on the message and verifies that it hasentries for both the source and destination IP addresses (i.e., the twopeer SNIUs of the association) in the appropriate ports' AssociationTables. If everything is verified, the message is released out theopposite port. If either peer. SNIU's entry cannot be found in theAssociation Table, then this SNIU will return an Association UnknownMessage to the source SNIU. The Message will contain the destinationSNIU's IP address to indicate which association needs to be deleted. Inany case, the SNIU uses the association originating SNIU's and the hostdestination's addresses in the Association Exists Message to locate anddelete the Association Request Message which was saved in the WaitingQueue (and the appropriate Schedule Table entry).

66. Release Key Unknown: A SNIU may receive an Association Grant Messagewith a flag set to indicate that an existing release key should be used.However, if the SNIU cannot locate the release key, it sends a ReleaseKey Unknown Message back to the previous SNIU requesting it to generatea new release key.

This message is generated by modifying the received Association GrantMessage. The destination address (the association originating SNIU's IP)is swapped with the terminating SNIU's address (i.e., the associationgranting SNIU's IP) in the data section of the datagram. The previousSNIU's certificate is replaced with this SNIU's certificate so theprevious SNIU can wrap the new release key and return it to this SNIU inthe Association Grant Message. The signature at the bottom is removed.

The message is changed from 58 to 66, and the new message is signed andsent back to the previous SNIU in the path. Note that this message isaddressed to the terminating SNIU which generated the originalAssociation Grant Message. However, this message is intended for theprevious SNIU in the new association's path. Therefore, if the firstSNIU to receive the message is an intermediate SNIU, it should processthe message and not send it on to the terminating SNIU.

If a SNIU receives a Release Key Unknown Message and it is not thedestination, the SNIU must be an intermediate SNIU somewhere in themiddle of the association's path. The SNIU verifies the signature on themessage, swaps the destination address (the association granting SNIU'sIP) with the per SNIU address (the association originating SNIU's IP) inthe data section, uses the new destination address to locate the peerSNIU's entry in the receiving port's Association Table, removes thebottom certificate from the message, and compares the DN in thecertificate with the DN in the Sym_Key Key Table entry indicated via thepeer SNIU's release key pointer. If the DN does not match, the SNIUaudits the error and over-writes the DN entry with the DN from thecertificate. In either case, the SNIU stores the certificate in theCertificate Table (over-writing the old one if a certificate with thesame DN already exists), generates a new release key, over-writes theold release key in the Sym_Key Key Table with the new release key (Kswrapped), wraps the key using the public key from the receivedcertificate, stores the wrapped release key in the message, changes themessage number from 66 back to 58, stores its certificate in the m.message, signs and sends it.

Native Host Message: When a SNIU receives a user datagram from a nativehost, the SNIU creates an entry (if one doesn't already exist) in thereceiving port's Association Table for the source host's IP, marks theassociation type as ‘native host’, sets he security level to thereceiving port's security level, and checks the opposite port'sAssociation Table for the destination's IP address.

If an entry does not already exist for the destination the SNIU createsa new entry, marks the association type as ‘pending’, stores thereceived datagram in the Waiting Queue, makes a corresponding entry inthe Schedule Table, creates an Association Request Message and sends it.Next, the SNIU creates and sends a Dragonfly Ping to the destinationhost. The SNIU stores the originating SNIU and originating host's IPaddresses in the datagram and sets the Dragonfly Fly but does not signthe message. If an Association Table entry exists for the destinationand the association type is ‘pending’, the SNIU stores the e receiveddatagram in the e Waiting Queue, linking it to other datagrams for thesame destination.

If an Association Table entry exists for the destination and theassociation type is ‘host’, the SNIU compares the source host's securitylevel to the destination host's security level. If the source's securitylevel is dominated by (i.e., less than or equal to) the destination's,the SNIU creates a Protected User Datagram (PUD). The SNIU sets thedestination to the peer SNIU's IP, sets the protocol type to indicate aDragonfly Message, uses the association key to encrypt the entirereceived datagram, inserts the ciphertext and IV, appends theassociation residue, generates and inserts a release residue (if theAssociation Table entry contains a pointer to a release key), appendsthe appropriate Dragonfly Message Flag, and sends the datagram. If thesource host is not dominated by the destination (i.e., a potentialwrite-down), the SNIU determines if this datagram was anticipated. If amatching datagram was predicted, the anticipated datagram is transformedinto a PUD (as described above) and sent. If an anticipated message isnot found the attempted write-down is audited.

If an Association Table entry exists for the destination and theassociation type is any other bona fide type (i.e., ‘native host’,‘sniu’ or ‘audit catcher’, the SNIU compares the source and destinationports' security levels to determine if the datagram can be allowed toproceed. If the comparison indicates a write-up situation, the SNIUgenerates and saves an anticipated message and releases the originaldatagram to the destination port. If a write-down situation, the SNIUdetermines if the datagram was predicted and sends the anticipatedmessage or audits as previously described. If a write-equal, thedatagram is released to the destination port.

Exemplary Messaging Using Guard SNIUs

The following example is intended to provide a further illustration of apreferred embodiment of a sequence of operations according to thepresent invention. This sequence of operations is applicable tocommunications from a first user utilizing a SNIU to a second user, alsoutilizing a SNIU, sent over an unsecured network.

The first user transmits an original message intended for the seconduser utilizing said network. A first Guard SNIU intercepts the originalmessage. The first Guard SNIU then transmits an association requestmessage intended for another SNIU and a ping message intended for thesecond user.

If the second user receives these messages, and is not utilizing aCompanion SNIU, it will ignore the association request message intendedfor another SNIU and respond to the ping message intended for it. Whenthe first SNIU receives the ping response from the second user, it willdetermine that it is the “closest” SNIU to the second user, and decidewhether transmitting the “original” message to the second SNIU willviolate network security parameters. If it will not, then the first SNIUwill simply forward the “original” message to the second user. Iftransmitting the “original” message to the second user will violatesecurity parameters, then the “original” message will not be transmittedto the second user, and this event will be audited.

When a second SNIU receives the association request message intended foranother SNIU and the ping message intended for the second user whichwere transmitted by the first SNIU, it ignores the ping message intendedfor the second user, and logs the association request message intendedfor another SNIU. It likewise then transmits another association requestmessage intended for another SNIU and another ping message intended forthe second user.

If another SNIU intercepts the second association request messageintended for another SNIU and the second ping message intended for thesecond user, it will perform the same before mentioned steps of thesecond SNIU. Accordingly, an unlimited number of SNIUs can beinterspaced between the first and second SNIUs in the present invention,as each interspaced SNIU will log the association request messagereceived, ignore the ping message received, and further transmit anotherassociation request message, and another ping message.

When the second user receives the association request message intendedfor another SNIU and the retransmitted ping message intended for it, ifnot utilizing a Companion SNIU, it will again ignore the associationrequest message intended for another SNIU and respond to the pingmessage intended for it. When a SNIU receives the ping response from thesecond user, it will determine that it is the “closest” SNIU to thesecond user. Upon this determination it will now respond to theassociation request message transmitted from the first SNIU which itlogged, with an association grant message. This association grantmessage includes necessary information for enforcing the networksecurity policy, such as mandatory access control information (i.e. thesecurity level of the second user, and encryption key affiliated withthe second SNIU).

Upon receipt of the association grant message transmitted by the secondSNIU, the first SNIU can now determine whether allowing the “original”message to be transmitted to the second user will violate any of thenetwork security policies, as the first SNIU now has the security datarequired to make that decision. If the transmission of the “original”message will not violate the network security policy, then using theencryption key included in the association grant message, the first SNIUwill transmit the encrypted “original” message to the second SNIU. Uponreceipt thereof, the second SNIU will decrypt the encrypted “original”message and may again determine whether allowing the “original” messageto proceed to the second user will violate network security parameters(i.e. discretionary access control). If it will not, the second SNIU cannow transmit the “original” message to the second user.

When using the term “closest,” in this manner, it is to be understoodthat “closest” refers to that SNIU which is to be associated oraffiliated with the second user.

If the first user is utilizing a Companion SNIU, then that Companion canbe seen to perform the steps of the first SNIU in the above example.

If the second user is utilizing a Companion SNIU, then that Companioncan be seen to perform the steps of the second SNIU.

It is to be understood that the embodiments described herein are merelyexemplary of the principles of the invention, and that a person skilledin the art may make many variations and modifications without departingfrom the spirit and scope of the invention. All such variations andmodifications are intended to be included within the scope of theinvention as defined in the appended claims.

1. A substantially portable computerized device adapted to permit ad hoc security associations to exist with other computerized devices that may or may not have communicated previously with said portable computerized device, comprising: a processing apparatus in communication with a memory; a first computer program operative to run on said portable device adapted to establish an ad hoc security association between said portable device and another remote device, said first computer program comprising a cryptographic data exchange algorithm adapted to cause said portable device to transmit cryptographic data generated substantially under control of said portable device to said another remote device while establishing said association; a second computer program operative to run on said portable device and adapted to encrypt data sent to said another device using at least one cryptographic key; and a third computer program operative to run on said portable device and adapted to append said data with an appended message element, said appended message element utilized by said another device for at least data integrity.
 2. The device of claim 1, wherein said another device compares said appended message element generated by said portable device with a second message element generated by said another device.
 3. The device of claim 2, wherein said appended message element is included within a message sent from said portable device, said message further comprising said encrypted data encrypted by at least one cryptographic key.
 4. The device of claim 2, wherein said establishment of an association comprises a mutual authentication procedure, said mutual authentication based on evaluating respective ones of information uniquely associated with said devices.
 5. The device of claim 1, wherein said portable device comprises an untrusted operating device, and is physically non-secure.
 6. The device of claim 1, wherein said portable device is configured not to pass data from said portable device over said network until said portable device is properly authenticated to said second device based on one or more cryptographic data elements.
 7. The device of claim 1, wherein said portable device is further adapted to dynamically generate at least one encryption key for each security association, said act of generating not requiring intervention by a network administrator or other entity.
 8. The device of claim 1, wherein said second and third computer programs are disposed logically within a software stack of said portable device below the Network Layer thereof.
 9. The device of claim 1, wherein said association comprises a multi-way authentication process, wherein said portable device is adapted to authenticate said another device, and further adapted to authenticate itself to said another device.
 10. The device of claim 1, wherein said portable device further comprises a cryptographic element exchange algorithm adapted to generate and transmit random data to said another device.
 11. The device of claim 10, wherein said transmission of said random data is associated with a procedure that permits both said portable device and said another device to possess encryption keys that permit the two devices to decrypt encrypted data sent by the other.
 12. The device of claim 1, wherein said portable device comprises a network interface, said interface adapted to communicate with said another device over an untrusted medium.
 13. The device of claim 12, wherein said portable device communicates with said another device over said untrusted medium without using an intermediary entity or apparatus.
 14. The device of claim 1, wherein said portable device can establish said association with said another device without accessing any other third entity.
 15. The device of claim 1, wherein said portable device and said another device can mutually authenticate one another without accessing any third entity for cryptographic information.
 16. The device of claim 1, wherein said portable device can establish said association with said second device without accessing any other third entity for cryptographic information.
 17. The device of claim 16, wherein said second and third computer programs are disposed logically within a software stack of said portable device above the Physical Layer thereof.
 18. The device of claim 17, wherein said second and third computer programs are disposed logically within a software stack of said portable device below the Network Layer thereof.
 19. A computerized device, comprising: a processor with an untrusted operating system running thereon; a first routine operative to run on said computerized device and adapted to obtain at least one address for said computerized device after said computerized device is placed in data communication with at least one another via an untrusted medium; a second routine operative to run on said computerized device and adapted to establish a security association between said computerized device and a second device, said second computer program comprising an authentication algorithm adapted to cause said computerized device and said second device to exchange cryptographic data over an unsecure network, said data being substantially unique to said association and comprising at least one random number; a third routine operative to run on said computerized device and adapted to seal or encrypt data sent from said computerized device using at least one cryptographic key; and a fourth routine operative to run on said computerized device and adapted to evaluate data sent from said second device for at least data integrity.
 20. The device of claim 19, wherein said computerized device, as part of establishing said association, utilizes random data that is transmitted from said second device.
 21. The device of claim 19, where said computerized device further comprises a routine adapted to identify or validate a user based on at least one of: (i) a password; or (ii) a unique identifier, input by the user via a user interface.
 22. A computerized device, comprising: a processor; a first computer program operative to run on said device and adapted to obtain at least one temporary address for said device; a second computer program operative to run on said device and adapted to establish a non-permanent security association between said device and a second device, said second computer program comprising a cryptographic data exchange algorithm adapted to cause said device and said second device to exchange cryptographic data, said data being substantially unique to said security association; a third computer program operative to run on said device and adapted to seal or encrypt data sent from said device using at least one cryptographic key; a fourth computer program adapted to identify or validate a user via one or more inputs received via said used interface before said association can be established; a fifth computer program adapted to authenticate said second device and further adapted to facilitate an authentication of itself to said second device; and a sixth computer program adapted to dynamically generate at least one encryption key for each security association, said act of generating not requiring intervention by a network administrator; wherein said device can establish said association with said second device without accessing any entity other than said second device for cryptographic information.
 23. A portable computerized device, comprising: a processing apparatus; a user interface adapted to receive user inputs; a first computer program operative to run on said portable device and adapted to obtain at least one temporary address for said portable device; a second computer program operative to run on said portable device and adapted to establish a non-permanent security association between said portable device and a second device, said second computer program comprising a cryptographic data exchange algorithm in which said portable device and said second device exchange cryptographic data via a physically non-secure network, said data being substantially unique to said security association; a third computer program operative to run on said portable device and adapted to seal or encrypt data sent from said portable device using at least one cryptographic key; and a fourth computer program adapted to identify or validate a user via inputs received via said used interface before said association can be established, said fourth computer program adapted to identify a user based at least in part on a cryptographic element associated with said portable device.
 24. The device of claim 23, wherein said portable device comprises an untrusted operating system, and is physically non-secure.
 25. The device of claim 23, wherein said portable device is configured not to pass data from said portable device until said second device is properly authenticated to said portable device.
 26. The device of claim 25, wherein said portable and second devices are mutually authenticated with one another.
 27. The device of claim 23, wherein said portable device is adapted to dynamically generate at least one encryption key for each security association, said act of generating not requiring intervention by a network administrator.
 28. The device of claim 23, wherein said second and third computer programs are disposed logically within a software stack of said portable device above the Physical Layer thereof.
 29. The device of claim 28, wherein said second and third computer programs are disposed logically within a software stack of said portable device below the Network Layer thereof.
 30. The device of claim 28, wherein said second and third computer programs are disposed logically within a software stack of said portable device below the Transport Layer thereof.
 31. The device of claim 23, wherein said association comprises a multi-way authentication process, wherein said portable device is adapted to authenticate said second device, and further adapted to authenticate itself to said second device.
 32. The device of claim 23, wherein said portable device further comprises an algorithm adapted to generate and transmit random data to said second device.
 33. The device of claim 32, wherein said transmission of said random data is associated with said data exchange algorithm that permits both said portable and second devices to possess encryption keys that permit the two devices to decrypt encrypted data sent by the other.
 34. The device of claim 23, wherein said portable device comprises a network interface, said interface adapted to communicate with said second device over an untrusted network.
 35. The device of claim 34, wherein said portable device communicates with said second device over said untrusted network without using an intermediary entity or apparatus.
 36. The device of claim 23, wherein said portable device can establish said association with said second device without accessing any other entity.
 37. The device of claim 23, wherein said portable device can establish said association with said second device without accessing any other entity for cryptographic information.
 38. The device of claim 37, wherein said portable and second devices are mutually authenticated with one another.
 39. The device of claim 38, wherein said second and third computer programs are disposed logically within a software stack of said portable device above the Physical Layer thereof.
 40. The device of claim 39, wherein said second and third computer programs are disposed logically within a software stack of said portable device below the Network Layer thereof.
 41. The device of claim 40, wherein said portable device communicates with said second device without using an intermediary entity or apparatus.
 42. A portable computerized device, comprising: processing means; a user interface adapted to receive user inputs; a first software means operative to run on said portable device for obtaining at least one temporary address for said portable device; a second software means operative to run on said portable device for establishing a non-permanent security association between said portable device and a second device, said portable device also comprising cryptographic data exchange means in which said portable device and said second device exchange cryptographic data via a physically non-secure network, said data being substantially unique to said security association; a third software means operative to run on said portable device for sealing or encrypting data sent from said portable device using at least one cryptographic key; and a fourth software means adapted to identify or validate a user via inputs received via said used interface before said association can be established, said fourth means adapted to identify a user based at least in part on a cryptographic element associated with said portable device.
 43. The device of claim 42, wherein said portable device comprises an untrusted operating system, and is physically non-secure.
 44. The device of claim 42, wherein said portable device is configured not to pass message data from said portable device until said second device is properly authenticated to said portable device.
 45. The device of claim 44, wherein said portable and second devices are mutually authenticated with one another.
 46. The device of claim 42, wherein said portable device is adapted to dynamically generate at least one encryption key for each security association, said generation not requiring intervention by a network administrator.
 47. The device of claim 42, wherein said second and third software means are disposed logically within a software stack of said portable device above the Physical Layer thereof.
 48. The device of claim 47, wherein said second and third software means are disposed logically within a software stack of said portable device below the Network Layer thereof.
 49. The device of claim 47, wherein said second and third software means are disposed logically within a software stack of said portable device below the Transport Layer thereof.
 50. The device of claim 42, wherein said association comprises a multi-way authentication process, wherein said portable device is adapted to authenticate said second device, and further adapted to authenticate itself to said second device.
 51. The device of claim 42, wherein said portable device further comprises means for generating and means for transmitting random data to said second device.
 52. The device of claim 51, wherein said transmission of said random data is associated with said data exchange means that permits both said portable and second devices to possess encryption keys that permit the two devices to decrypt encrypted data sent by the other.
 53. The device of claim 42, wherein said portable device comprises a network interface, said interface adapted to communicate with said second device over an untrusted network.
 54. The device of claim 53, wherein said portable device communicates with said second device over said untrusted network without using an intermediary entity or apparatus.
 55. The device of claim 42, wherein said portable device can establish said association with said second device without accessing any other entity.
 56. The device of claim 42, wherein said portable device can establish said association with said second device without accessing any other entity for cryptographic information.
 57. The device of claim 56, wherein said portable and second devices are mutually authenticated with one another.
 58. The device of claim 57, wherein said second and third software means are disposed logically within a software stack of said portable device above the Physical Layer thereof.
 59. The device of claim 48, wherein said second and third software means are disposed logically within a software stack of said portable device below the Network Layer thereof.
 60. The device of claim 59, wherein said portable device communicates with said second device without using an intermediary entity or apparatus. 